#ifndef _TD_TERRAIN_TILEMAP_H_ 
#define _TD_TERRAIN_TILEMAP_H_


/************************************************************************/
/* Core                                                                 */
/************************************************************************/
#include "Core/Matrix2D.h"

/************************************************************************/
/* Resources                                                            */
/************************************************************************/
#include "Resources/Tiles/Tilemap.h"


using namespace TD_Core;
using namespace TD_Resources;

namespace TD_Game {

	class TerrainTilemap : public Tilemap {
		


	protected:

		/************************************************************************/
		/* Protected functions                                                  */
		/************************************************************************/

		
		

		
	public:
		
		/************************************************************************/
		/* Constructors                                                         */
		/************************************************************************/
		//Default constructor
		TerrainTilemap();

		//Copy constructor
		TerrainTilemap(const TerrainTilemap &rhs);
		
		//Assignment constructor
		TerrainTilemap & operator=(const TerrainTilemap &rhs);

		//Initialization constructor
		TerrainTilemap(Tileset *g_pTileset);

		/************************************************************************/
		/* Access functions                                                     */
		/************************************************************************/
		inline Matrix2D * const getPathMatrix() const {
			return(m_pTilemapMatrix);
		}

		/************************************************************************/
		/* Functionalities                                                      */
		/************************************************************************/
		
		virtual bool loadTilemap(const string &tileMapStr, const Coord2D & mapPosition, const Coord2D &tileSize, const Coord2D &numTiles);
		virtual bool loadTilemap(const Tileset *g_pTileset, const string &tileMapStr, const Coord2D & mapPosition, const Coord2D &tileSize, const Coord2D &numTiles);
		
	};

}
#endif